Taskbook-Konzept 2019-03-14
Didaktik
Sagen wir so: Man kann sich Data Science auch im Selbststudium aneignen. Aber Lernen im Modus eines selbstverantworteten Selbststudiums ist nicht jedermanns und jeder Frau Sache.
Wenn ich als Dozent einer Fachhochschule Kurse anbiete, dann besteht die "Dienstleistung"
- nicht in der Bereitstellung von Inhalt,
- sondern in der Unterstützung beim Erwerb von Wissen und Kompetenzen, und zwar
- im Lern-Modus des tutoriell begleiteten Präsenzlernens in kleinen Gruppen.
Sie lernen wenig (und vergessen es schnell), wenn ich Ihnen mein Wissen nur vortragen würde.
- Lernen tun Sie nur dann etwas, indem *Sie* lernen.
- Lernen kann Ihnen niemand abnehmen, sondern Sie müssen es selbst tun.
- Genau in diesem Selbst-Lernen unterstützen wir Sie in unseren Veranstaltungen.
Also ist die Veranstaltung nicht als Lehr-, sondern als Lernveranstaltung angelegt. Stichworte: Blended Learning, Inverted Classroom, praxisorientiertes Lernen.
Diskussion_2019-05-31
(Dieser Abschnitt: Text zur Diskussion mit Kollegen und Studierenden)
Ziel: Aufbau eines Kurses für ca 12 (min 8, max 18) Personen, die mit einem vorgegebenen Lernaufwand - hier z.B. 120h brutto - möglichst viel lernen wollen ... in einem kommerzielln Kurs würden sie sogar dafür bezahlen, dass ein außenstehender Trainer ihren inneren Schweinehund antreibt, d.h. sie bezahlen dafür, Selbstverantwortung abgeben zu dürfen ... sie einen Antreiber brauchen.
Beobachtung: Lernmaterial und Kurse (Moocs!) gibt es im Netz genug; unser Kern der Dienstleistung: nicht content disclosure, sondern Zuckerbrot, Peitsche und Betreuung ... unsere Adressaten wollen schnell und effektiv lernen, wissen aber, dass sie so stark in den Beruf etc. eingebunden sind, dass sie die Selbstdisziplin nicht aufbringen, mit den massenhaft frei verfügbaren (und z.T. auch richtig guten!) Materialien strukturiert und ergebnisorientiert zu lernen.
Was wir also haben: Ausführlichste Medien, in denen alles enthalten ist, was wichtig ist. Aufbau eines "Kurses" heißt hier: Nicht noch weiteres "ergänzendes" Primärmaterial erstellen (denn an Primärmaterial ist kein Mangel, siehe z.B. Data Science Training: Ressourcen), sondern Medien zur Unterstützung des Lernens herstellen, und dieses Lernen strukturieren, begleiten, unterstützen ... Zeitaufwand: zu ausgewählten Online-Medien ein Lernkonzept erstellen und dieses selbst teilweise in Textform repräsentieren: Übersichts-Mindmaps, Anki-Lernkarten, Q&A-Plattform etc. ...
Wichtigster Aspekt: "Lernen sichtbar machen" (Hattie):
- Die Lernenden müssen jederzeit prüfen und erkennen können, ob und dass und was sie gelernt haben
- insbes. durch hochfrequente, idealerweise hoch automatisierte Mini-Aufgaben und Lösungen
Eigene Vorarbeiten: das (Er-) Lernen eines Buchinhalts unterstützen; Wir lesen ein Buch: Wileb
Aktives statt rezeptives Lernen
Mantra jeder Hochschuldidaktik-Veranstaltung: Nachhaltig wird nur gelernt, wenn man die Dinge selbst tut.
Erfahrung: unbegleitetes Selbstlernen funktioniert nicht; erforderlich: Verantwortung übernehmen für das Lernen anderer. Dabei aber "didaktischer Kurzschluss" vermeiden: Jemand lernt nicht automatisch, nur weil ein anderer lehrt.
Also Anregungen schaffen zur Selbstaktivierung, zum selber lernen (Ggs.: beigebracht bekommen)
Primäre didaktische Methode: Direkte Instruktion
Adressaten
Lernende
- die an sich den Anspruch haben, in einem Team (Projektleiter, Domainexperte, Mathematiker etc. ) die Lösung auch tatsächlich in Code umsetzen zu können
- die die Theorie schon gehört und im Prinzip verstanden haben, und die Theorie auch eigenhändig umsetzen können wollen
Kontext KMU (Ggs.: Forschungseinrichtung):
- Lernziel "Umsetzen können" ist ein ganz anderes Lernziel als z.B. in einem Universitätsstudiengang, in dem es eher darum geht, die theoretischen Grundlagen in der Tiefe zu verstehen
- ein Kurs für Studierende an einer University of Applied Science: Anwendung von existierenden Techniken - und dazu auch Kenntnis incl. hands-on Erfahrung.
Lehrziel des Dozenten: Die Leute sollen in Python mit Pandas und Scikit-learn Machine Learning (ML) mit Standard-Algorithmen (keine NN) selbst programmieren können ... ein Training, Praktikum, bei dem gehobelt wird; Theorie nur minimal am Rande und soweit unbedingt erforderlich; Ziel: ML Programmieren können ... Adressaten: Leute, die schon etwas programmieren können, und das jetzt mit Python machen wollen ... 1 Tag allgemeiner Python Vorkurs, ab Tag 2 dann ML.
Lernziel der TN: Sie wollen die nötigen Programmierfertigkeiten erwerben, um bei einer Kaggle-Competition im Mittelfeld mithalten können
Was wir insbesondere nicht lehren:
- Domain-Expertise: diese muss mitgebracht werden
- Mathematik, insbes. Statistik
- Neuronale Netze, Tensorflow, Verarbeitung unstrukturierter Daten (Text, Bild)
- Messreihenanalysen
Idee: Task-orientierter Unterricht
Primat der Tasks vor der Theorie:
- "Unterricht" als eine Sequenz von einfachen (Programmier-) Aufgaben (traditionell: Übungsblättern)
- Theorie
- "just in time" nachgeliefert dann, wenn sie aktiv nachgefragt wird
- nicht vorab "auf Vorrat".
- nicht als Vorlesung, sondern in Form eines gut verständlichen Lexikons / Lehrbuches / Sammlung von youtube-Videos
Konzept soll geeignet für selbstgesteuertes Lernen (SGL) sein, aber insbes. auch in der Präsenzlehre skalierbar verwendbar sein, z.B. 100 Studierende in Kleinstgruppen (2-4 Personen) im großen Saal, eine Handvoll Tutoren geht herum und bietet ihre Hilfe an
Mikro-Tasks
- unabhängig voneinander lösbar
- dann zunehmend aufeinander aufbauend
- es entsteht ein gerichteter Abhängigkeits-Graph von Tasks, aus denen dann zunehmend komplexere Tasks zusammengestellt werden ; Metapher Bauklötzchen, Bauteile
Transfer: verschiedene kleinere Projekte, in denen mehrere Bauklötzchen zu einem abgeschlossenen kleinen Werk zusammengesetzt werden: Ein Projekt soll also nicht durch Snippets aus Sorceforge, sondern durch Verwendung der vorgegebenen Tasks gelöst werden.
Metaphern: Sprachenlernen, Musik, Turnen
Pandas zu lernen zu lernen ist ähnlich dem Erlernen einer Sprache. (Man könnte auch die These vertreten, dass es sich beim Programmieren tatsächlich um genuines Sprachenlernen handelt, und entsprechend auch die gesamte Sprachlerndidaktik anwenden ist. Dafür soll an anderem Ort argumentiert werden, uns reicht hier die Ähnlichkeit zum Sprachenlernen). Daraus folgt vor allem:
- Wer eine Sprache aber sprechen will, muss das Maul aufmachen. Wer programmieren lernen will, muss programmieren.
Pandas zu lernen ist ähnlich dem Erlernen eines Musikinstruments: man benötigt das Instrument als Werkzeug, um Musik überhaupt machen zu können; die Art der Musik hängt aber davon ab, wie gut man da Instrument schon beherrscht; beim Erst-Instrument in der Jugend parallele Entwicklung von Instrument und Gegenstand ... persönliche Erfahrung: Erlernen eines Zweit-Instruments geht sehr viel schneller voran, denn man muss nur noch die psychomotorischen Herausforderungen des neuen Werkzeugs in den Griff bekommen, das musikalische Verständnis ist schon da ... ähnlich dürfte es mit dem Umstieg von R auf Python (Statistik-Verständis ist schon da) oder dem Umstieg von Java auf Python (Programmier-Verständnis ist schon da) gehen.
Pandas lernen ist wie eine Turnübung. Prüfung ist wie Vorturnen: Da tritt nur an, wer weiß, dass er den Hüftaufschwung am Reck kann.
Was ist dem Sprechen, dem Musizieren, dem Turnen etc. gemeinsam? Dass nicht Wissen angefragt wird, sondern ein Können vorgeführt werden muss.
- nicht: "Ich weiß, wie man Klavier spielt: Man drückt zum richtigen Zeitpunkt die richtige Taste." ... "Ich weiß, wie ein Hüftaufschwung ..."
- sondern: Hic Rhodus, hic salta (also nicht primär auf Wissen, sondern auf Können fokussieren)
Prüfungsform: Musik-Aufführung, Vorturnen, Spachprüfung ... also Prüfungsformen, in denen man etwas vormachen muss, hier: eine Lösung programmieren muss.
Herausforderung: Wie verhindern wir paste & copy?
- Wir geben größtenteils fertigen Code vor, der nur noch stellenweise ergänzt werden muss.
- Prüfungsteil A, Bloom Lernzielniveau 1 & 2: In der Prüfung kommen genau die Code-Schnipsel aus dem Übungsbetrieb 'dran.
- Prüfungsteil B: Transfer
- Lösung muss mit den Tasks / Bausteinen aus der Veranstaltung erfolgen.
- #hide-Technik!
Realisierung in dsci WS 2019
Unsere Primär- und Sekudär-Quellen des Kurses arbeiten wir gemeinsam ausschnittsweise durch. Dazu müssen wir die Quellen in Häppchen teilen, sequenzieren und takten, um sie gemeinsam (Präsenzhochschule, Übung in einem sozialen Zusammenhang!) erarbeiten zu können. Außerdem brauchen wir noch Theorie, dazu dient die Vorlesung. Aus all dem entsteht ein Kurs.
Technisch-sachsystematische Primärquellen sind:
- Chris Albon MLPC Mikro-Rezepte
- ultimative Quelle: Original-Doku von Pandas, Scikit etc.
Primärquelle Quelle für Theorie, bereits didaktisch sequenziert: Die Vorlesung aus unserem Kurs hat Kollege Michael Bowles schon konzipiert, mehrfach gehalten, sein Skript als als Buch ausgebaut und bei einem der rennomiertesten Verlage publiziert: Bowles.
Übungsmaterial: Bei einer didaktischen Entscheidung folge ich nur zum Teil Bowles: Bowles verwendet keine DataScience Bibliotheken, sondern arbeitet quasi mit dem Taschenmesser rein auf puren Python Datenstrukturen.
- Das ist didaktisch super, wenn man zeigen will, wie man aus einer Liste von Zahlen manuell die Standardabweichung berechnet.
- In der Praxis macht man das aber anders. Der DataScientist in der Praxis verwendet high-level Bibliotheken wie Numpy, Pandas, Scikit, Seaborn u.A.
- Also habe ich die Code-Beispiele von Bowles weitgehend durch eigenen, bibliotheks-basierten Code ersetzt, mit dem wir in der Übung arbeiten.
Elemente der Veanstaltung also:
- Bowles: zum Buch verschriftlichte Vorlesung
- JB gibt in Impulsreferaten jeweils einen Überblick über die einzelnen Bowles-Kapitel; im Detail nachlesen kann man das dann bei Bowles selbst.
- Übungen als ipynb-Notebooks, Bowles 1:1 zugeordnet:
- ersetzen größerenteils Bowles-Code
- mit #hide als Übungen aufbereitet: nicht schwierig, aber man muss es machen: Aktivierungs-Element!
- Sekundärquellen, unsystematischer aufgebaut, mäandernd den Blick erweiternd: verschiedene Tutorials im Netz